Launch monitor

ABSTRACT

A launch monitor having a camera can be used to measure a trajectory parameter of a ball. In one example, a method can include changing a mode of the camera from a low-speed mode to a high-speed mode. The camera can include an image sensor array having a plurality of pixels. The camera can generate a video frame using more pixels in the low-speed mode than in the high-speed mode. A first video frame can be received, the video frame comprising values captured during the high-speed mode from a first subset of the plurality of pixels. A second video frame can be received, the video frame comprising values captured during the high-speed mode from a second subset of the plurality of pixels. The trajectory parameter of the ball can be calculated using the first video frame and the second video frame.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/727,331, filed Jun. 1, 2015, which claims the benefit of U.S.Provisional Application No. 62/168,225, filed May 29, 2015, all of whichare incorporated in their entirety by reference herein.

FIELD

This disclosure pertains to, inter alia, measuring a trajectoryparameter of a ball. More specifically, this disclosure pertains tomeasuring a trajectory parameter of a ball moving at a relatively highspeed, such as a golf ball.

BACKGROUND

Sports enthusiasts may desire to improve their performance throughrepeated practice. For example, a golfer may hit golf balls on a drivingrange and/or into a net. The golfer may want to assess each shot tofine-tune performance. A launch monitor can be used to assessperformance by measuring one or more properties of the golf ball when itis struck. For example, the launch monitor can be used to measure aspeed or launch angle of the golf ball when it is struck. However,conventional launch monitors tend to be expensive or inaccurate.

SUMMARY

In one example, a method for determining a trajectory parameter of agolf ball is described. The method can include changing a mode of animage sensor to a high-speed mode. When the image sensor is configuredto be in the high-speed mode, it can have a frame rate that is fasterthan when the image sensor is not configured to be in the high-speedmode, such as when it is configured to be in a low-speed mode. Forexample, the camera can use interlaced scanning of the image sensorarray during the high-speed mode and progressive scanning of the imagesensor array during the low-speed mode. As another example, the cameracan scan a sub-array of the image sensor array during the high-speedmode and the camera can scan all or a larger portion of the image sensorarray during the low-speed mode. A first video frame of the golf ballcan be captured using a first subset of pixels of the image sensor whenin the high-speed mode. A second video frame of the golf ball can becaptured using a second subset of pixels of the image sensor when in thehigh-speed mode. As a specific example, the first subset of pixels ofthe image sensor can include only even rows of the image sensor and thesecond subset of pixels of the image sensor can include only odd rows ofthe image sensor, such as when the high-speed mode uses interlacing. Asanother example, the first subset of pixels of the image sensor and thesecond subset of pixels of the image sensor can include a sub-array ofthe image sensor. The trajectory parameter of the golf ball can becalculated using the first video frame and the second video frame. Thetrajectory parameters can include ball speed, launch angle, deviationangle, backspin, and sidespin, for example.

In another example, a method for determining a trajectory parameter of aball is described. The method can include changing a mode of a camerafrom a low-speed mode to a high-speed mode. The camera can comprise animage sensor array having a plurality of pixels. The camera can generatea video frame using more pixels in the low-speed mode than in thehigh-speed mode so that the high-speed mode has a higher frame rate thanin the low-speed mode. A first video frame can be received. The firstvideo frame can include values captured during the high-speed mode froma first subset of the plurality of pixels. A second video frame can bereceived. The second video frame can include values captured during thehigh-speed mode from a second subset of the plurality of pixels. Thetrajectory parameter of the ball can be calculated using the first videoframe and the second video frame.

In another example, a mobile device for monitoring a golf ball isdescribed. The mobile device can include a processor, a camera, and acomputer-readable storage medium. The camera can comprise an imagesensor including a plurality of pixels and a plurality of scan patternsfor capturing a video frame. The plurality of scan patterns can includea high-speed scan pattern and a low-speed scan pattern. Thecomputer-readable storage medium can include instructions that uponexecution cause the processor to perform a method for monitoring thegolf ball. The method can include detecting the golf ball in a field ofview of the camera. When the golf ball is detected in the field of viewof the camera, the high-speed scan pattern can be used so that fewerpixels are scanned per video frame than when the low-speed scan patternis used. A motion parameter of the golf ball can be calculated usingvideo frames captured by the image sensor.

The various embodiments described herein can provide multipleadvantages. For example, having a high-speed mode and a low-speed modefor the image sensor array/camera can allow the temporal and spatialresolution of the camera to be traded-off. When a fast-moving object,such as a struck golf ball, is to be captured by the camera, thehigh-speed mode may enable more video frames of the object to becaptured before the object moves out of the field of view of camera. Theadditional video frames can be used to potentially increase the accuracyand/or capabilities of the launch monitor. When the motion is slower,the low-speed mode can be used so that the full spatial resolution ofthe camera can be used to capture an image. The camera can beincorporated into a mobile device having general purpose computing andmessaging capabilities so that the launch monitor can be part of amulti-function mobile device as opposed to a single-function device. Thelaunch monitor can analyze the video images in real-time so that a usercan get real-time feedback about his or her performance and the user canmake adjustments to his or her form based on the feedback.

The foregoing and other objects, features, and advantages of theinvention will become more apparent from the following detaileddescription, which proceeds with reference to the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic top view of an example placement of a mobilelaunch monitor relative to a ball being monitored.

FIG. 2 is a system diagram of an example of a mobile device.

FIG. 3 is a flow diagram of an example method of operation of a mobilelaunch monitor.

FIG. 4 is a schematic of a portion of an example image sensor.

FIG. 5 is an example of processing an image of a video frame.

FIG. 6 is an example of images captured on two different video frames.

FIGS. 7 and 8 are examples of screen-shots of the mobile launch monitor.

FIG. 9 is a flow diagram of an example method of determining atrajectory parameter of a ball.

FIG. 10 is a system diagram of an example computing environment.

DETAILED DESCRIPTION

The drawings are intended to illustrate various aspects of the subjectmatter and are not necessarily to scale. In the detailed description andin the drawings themselves, specific illustrative examples are shown anddescribed herein in detail. It will be understood, however, that thedrawings and the detailed description are not intended to limit theinvention to the particular forms disclosed, but are merely illustrativeand intended to teach one of ordinary skill how to make and/or use theinvention claimed herein.

As used in this application and in the claims, the singular forms “a,”“an,” and “the” include the plural forms unless the context clearlydictates otherwise. Additionally, the term “includes” means “comprises.”Further, the term “coupled” encompasses mechanical as well as otherpractical ways of coupling or linking items together, and does notexclude the presence of intermediate elements between the coupled items.

The described things and methods described herein are representativeembodiments and should not be construed as being limiting in any way.Instead, this disclosure is directed toward novel and non-obviousfeatures and aspects of the various disclosed embodiments, alone and invarious combinations and sub-combinations with one another. Thedisclosed things and methods are not limited to any specific aspect orfeature or combinations thereof, nor do the disclosed things and methodsrequire that any one or more specific advantages be present or problemsbe solved.

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed things and methods can be used in conjunction with otherthings and method. Additionally, the description sometimes uses termslike “produce” and “provide” to describe the disclosed methods. Theseterms are high-level abstractions of the actual operations that areperformed. The actual operations that correspond to these terms willvary depending on the particular implementation and are readilydiscernible by one of ordinary skill in the art.

In the following description, certain terms may be used such as “up,”“down,”, “upper,” “lower,” “horizontal,” “vertical,” “left,” “right,”and the like. These terms are used, where applicable, to provide someclarity of description when dealing with relative relationships. But,these terms are not intended to imply absolute relationships, positions,and/or orientations. For example, with respect to an object, an “upper”surface can become a “lower” surface simply by turning the object over.Nevertheless, it is still the same object.

Overview

Trajectory parameters of a moving ball can be measured in a variety ofways. For example, radar can be used to measure the speed of the ball.In particular, a series of electromagnetic waves can be transmittedtoward the ball and the speed of the ball can be calculated by measuringthe radiation reflected from the ball. As another example, an opticalcamera can be used to capture a sequence of video images or frames ofthe moving ball, and the speed of the ball can be calculated using thevideo frame(s). In particular, a given reference point or points on theball can be detected in a sequence of video frames captured at differentmoments in time. Trajectory parameters, such as speed and spin, can becalculated by measuring the distance that the reference point or pointstravel between the video frames, and determining the time differencebetween when the frames were captured. Trajectory parameters can also becalculated by detecting the direction and extent of motion blur in asingle image and normalizing the detected motion by the total timerequired to acquire the image

A quality of the captured images can determine which trajectoryparameters can be calculated. The quality of the captured images can bedetermined based on a variety of factors related to the ball, theenvironment, and the camera. Environmental properties can includeambient lighting, qualities of background objects and movement, and thedistance of the camera from the ball. Ball properties can include thesize of the ball, the speed of the ball, and any markings on the ball.Camera properties can include the spatial resolution of the camera, andthe frame rate of the camera.

The spatial resolution of the camera is a measure of how fine an imagecan be captured at a given distance from the object. A typical digitalcamera includes an image sensor for detecting an image and optics forfocusing an image onto the image sensor. The spatial resolution can beaffected by properties of the camera optics (such as lens aberrations,diffraction, focal length, aperture, and accuracy of focus), the numberof picture elements or pixels of the image sensor, and the physical sizeof the sensor. A finer object can typically be resolved as camera opticsimprove and as the number of pixels or physical size of an image sensorare increased. For example, a larger image sensor can potentially detectmore photons which can increase the contrast ratio and decrease thenoise of the sensor. The pixels of the image sensor are typicallyarranged in a rectangular array, and an image is captured and scannedout of the image sensor one full row at a time. A typical digital cameraprogressively scans from the lowest row to the highest row (or viceversa) so that the video frame includes the values captured from allpixels of the image sensor. The frame rate of the camera is a measure ofhow long it takes to capture a single video frame on the camera. Thus,the typical frame rate of a progressively scanned image sensor is aboutthe time it takes to scan all of the rows of the image sensor (e.g.,there may be padding added between the frames). An alternative way toscan an image is interlacing, where alternating rows of the image sensorare scanned. In particular, when using interlacing, a first video framecan include all the values captured from all of the pixels of the oddrows of the image sensor, and a second successive video frame caninclude all the values captured from all of the pixels of the even rowsof the image sensor. Thus, interlacing can take two or more scans toretrieve all of the values of the pixels, but the frame rate can bemultiplied by the number of sets of lines compared to progressivescanning of the entire sensor array.

The properties of a golf ball in motion can make it challenging toproduce a low-cost and accurate launch monitor. For example, a golf ballis only 1.680 inches in diameter, and a golf ball struck by a clubheadcan leave the clubhead at a speed approaching 200 miles per hour and canspin at a rate greater than 10,000 revolutions per minute. It may bedesirable for a launch monitor to measure the trajectory parameters ofspeed, launch angle, and spin (both backspin and sidespin). The moreaccurate launch monitors tend to be expensive (costing multiplethousands of dollars) and may require special environmental conditions,such as a fixed location and indoor lighting, and specialized balls. Forexample, these launch monitors may include multiple optical cameras.Less expensive launch monitors may be less accurate and/or measure fewertrajectory parameters and may only perform a single golf-specificfunction. For example, frame rates of cameras on typical mobile devicesare generally not fast enough to accurately measure a small, fast-movinggolf ball.

As described herein, a launch monitor can potentially be made moreaccurate and/or less expensive by incorporating a camera that can switchto a high-speed mode that increases the frame rate of the camera. As oneexample, a launch monitor can include a processor, a display, and asingle camera with a low-speed mode and a high-speed mode. As a specificexample, the low-speed mode can cause the camera to use a progressivescanning mode that scans all of the pixels of an image sensor of thecamera to create a video frame, and the high-speed mode can cause thecamera to use an interlaced scanning mode that scans half of the pixelsof the image sensor to create a video frame. Thus, the high-speed modecan have a higher frame rate (e.g., twice the frame rate) than thelow-speed progressive scan mode. The camera can be changed to high-speedmode. For example, the camera can be changed to high-speed mode when alaunch monitor application is started or when a ball is detected in afield of view of the camera. When in the high-speed mode, a first videoframe of the ball can be received. The first video frame can include thevalues captured from a first subset of pixels of the image sensor. Forexample, the first video frame can include the values captured from oddrows of the image sensor. When in the high-speed mode, a second videoframe of the ball can be received. The second video frame can includethe values captured from a second subset of pixels of the image sensor.For example, the second video frame can be the immediately successivevideo frame to the first frame, and the second video frame can includethe values captured from even rows of the image sensor. A trajectoryparameter of the ball can be calculated using the first video frame andthe second video frame. For example, the on-board processor cancalculate a distance the ball travelled in the time between when thefirst video frame was captured and when the second video frame wascaptured. The speed of the ball can be determined by dividing thedistance the ball travelled by the time elapsed between video frames(e.g., the reciprocal of the frame-rate). The trajectory parameter canbe provided to the user of the launch monitor in real-time via thelaunch monitor display or another output device. Thus, the user can getreal-time feedback about his or her performance and the user can makeadjustments to his or her form based on the feedback. When the camerathat can switch to a high-speed mode is incorporated onto a mobiledevice having smart phone features, the launch monitor can be part of amulti-function mobile device.

An Example of Relative Placement of a Launch Monitor Relative to a Ball

FIG. 1 is a schematic top view of an example placement of a mobilelaunch monitor 100 relative to a ball 110 being monitored. The launchmonitor 100 can be used in an indoor or outdoor setting, such as at adriving range, for example. The launch monitor 100 can include a camera(not shown) and a kickstand (not shown). For example, the kickstand canbe used for supporting or propping up the launch monitor 100 in anorientation so that the ball is placed in a field of view 120 of thecamera, where the field of view is bounded by rays 130 and 140. Thelaunch monitor 100 can be placed generally perpendicular to a line offlight 150 of the ball 110. The ball 110 can be placed at a distance 160from the launch monitor 100 so that a logo (not shown) of the ball 110can be resolved by the camera of the launch monitor 100. As one example,the distance 160 can be between one foot and eight feet. In analternative embodiment, the launch monitor 100 can be placed behind theball 110 and out of the swing radius of the clubhead (such as three toeight feet).

An Example Mobile Device

FIG. 2 is a system diagram depicting an example of a mobile device 200including a variety of optional hardware and software components, showngenerally at 202. The mobile device 200 can be a multi-function devicethat includes launch monitor functionality. The launch monitorfunctionality can be pre-loaded on the mobile device 200 or can bedownloaded from an app store, for example.

Any components 202 in the mobile device 200 can communicate with anyother component, although not all connections are shown, for ease ofillustration. The mobile device 200 can be any of a variety of computingdevices (e.g., cell phone, smartphone, handheld computer, PersonalDigital Assistant (PDA), etc.) and can allow wireless two-waycommunications with one or more mobile communications networks 204, suchas a cellular or satellite network.

The illustrated mobile device 200 can include a controller or processor210 (e.g., signal processor, microprocessor, ASIC, or other control andprocessing logic circuitry) for performing such tasks as signal coding,data processing, input/output processing, power control, and/or otherfunctions. An operating system 212 can control the allocation and usageof the components 202 and support for one or more application programs214. The application programs can include a launch monitor, commonmobile computing applications (e.g., email applications, calendars,contact managers, web browsers, messaging applications), or any othercomputing application. The operating system 212 can include driversand/or other functionality for controlling and accessing one or moreinput devices 230 and one or more output devices 250. For example, theoperating system 212 can include functionality for changing modes of acamera 236 between a low-speed mode and a high-speed mode.

The illustrated mobile device 200 can include memory 220. The memory 220can include non-removable memory 222 and/or removable memory 224. Thenon-removable memory 222 can include RAM, ROM, flash memory, a harddisk, or other well-known memory storage technologies. The removablememory 224 can include flash memory or a Subscriber Identity Module(SIM) card, which is well known in GSM communication systems, or otherwell-known memory storage technologies, such as “smart cards.” Thememory 220 can be used for storing data and/or code for running theoperating system 212 and the applications 214. Example data can includeweb pages, text, images, sound files, video data, or other data sets tobe sent to and/or received from one or more network servers or otherdevices via one or more wired or wireless networks. The memory 220 canbe used to store a subscriber identifier, such as an InternationalMobile Subscriber Identity (IMSI), and an equipment identifier, such asan International Mobile Equipment Identifier (IMEI). Such identifierscan be transmitted to a network server to identify users and equipment.

The mobile device 200 can support one or more input devices 230, such asa touchscreen 232, microphone 234, camera 236, physical keyboard 238and/or trackball 240. The camera 236 can include the capability toswitch between multiple image capture modes. For example, the camera 236can include a low-speed mode and one or more high-speed modes. Thehigh-speed modes can be controlled with software so that the camera 236can have a higher frame rate in the high-speed modes as compared to theframe rate in the low-speed mode. For example, the scan pattern of animage sensor array of the camera 236 can be changed based on the mode ofthe camera 236. As one example, the low-speed mode can use progressivescanning of the image sensor array and the high-speed mode can useinterlaced scanning of the image sensor array. As another example, thelow-speed mode can scan all of the pixels of the image sensor array andthe high-speed mode can scan a sub-array of pixels of the image sensorarray.

The mobile device 200 can support one or more output devices 250, suchas a speaker 252 and a display 254. Other possible output devices (notshown) can include piezoelectric or other haptic output devices. Somedevices can serve more than one input/output function. For example,touchscreen 232 and display 254 can be combined in a single input/outputdevice. The input devices 230 can include a Natural User Interface(NUI). An NUI is any interface technology that enables a user tointeract with a device in a “natural” manner, free from artificialconstraints imposed by input devices such as mice, keyboards, remotecontrols, and the like. Examples of NUI methods include those relying onspeech recognition, touch and stylus recognition, gesture recognitionboth on screen and adjacent to the screen, air gestures, head and eyetracking, voice and speech, vision, touch, gestures, and machineintelligence. Other examples of a NUI include motion gesture detectionusing accelerometers/gyroscopes, facial recognition, 3D displays, head,eye, and gaze tracking, immersive augmented reality and virtual realitysystems, all of which may provide a more natural interface. Thus, in onespecific example, the operating system 212 or applications 214 cancomprise speech-recognition software as part of a voice user interfacethat allows a user to operate the device 200 via voice commands.Further, the device 200 can comprise input devices and software thatallows for user interaction via a user's spatial gestures, such asdetecting and interpreting gestures to provide input to a gamingapplication.

A wireless modem 260 can be coupled to an antenna (not shown) and cansupport two-way communications between the processor 210 and externaldevices, as is well understood in the art. For example, the externaldevices can be server computers, wearable devices (such as a Bluetoothheadset or a watch), or additional output devices. The modem 260 isshown generically and can include a cellular modem for communicatingwith the mobile communication network 204 and/or other radio-basedmodems (e.g., Bluetooth 264 or Wi-Fi 262). The wireless modem 260 istypically configured for communication with one or more cellularnetworks, such as a GSM network for data and voice communications withina single cellular network, between cellular networks, or between themobile device and a public switched telephone network (PSTN).

The mobile device can further include at least one input/output port280, a power supply 282, a satellite navigation system receiver 284,such as a Global Positioning System (GPS) receiver, an accelerometer286, and/or a physical connector 290, which can be a USB port, IEEE 1394(FireWire) port, and/or RS-232 port. The illustrated components 202 arenot required or all-inclusive, as any components can be deleted andother components can be added.

An Example Method of Operation of a Mobile Launch Monitor

FIG. 3 is a flow diagram of an example method 300 of operation of amobile launch monitor. At 310, the launch monitor can be in aninitialization mode. For example, the initialization mode can be enteredwhen a launch monitor application is launched from a mobile device, suchas mobile device 200. During the initialization mode, instructions canbe presented to a user of the launch monitor, the launch monitor can becalibrated, and other initialization routines can be performed. Forexample, the instructions for setting up and/or using the launch monitorcan be provided. As a specific example, the instructions for setting upand/or using the launch monitor can be presented on a display, such asthe display 254, of the launch monitor. As another example, theinstructions for setting up and/or using the launch monitor can bepresented as speech output from a speaker, such as the speaker 252, ofthe launch monitor.

The instructions can include steps for positioning or calibrating thelaunch monitor, steps for using the launch monitor to take measurements,steps for synchronizing to a server computer or external output device,and other suitable steps for using the launch monitor. For example, theinstructions can indicate that a user can position a ball facing thelaunch monitor so that a logo of the ball is facing a camera of thelaunch monitor. As another example, the instructions can indicate adistance or range of distances in which to place the launch monitor fromthe ball.

The launch monitor can be calibrated so that the orientation of thecamera and a horizontal reference can be determined. The horizontalreference can be determined in various ways. As one example, anorientation sensor or an accelerometer, such as the accelerometer 286,can be used to detect the acceleration due to the gravity of the earth.The horizontal reference can be calculated as normal to the accelerationdue to gravity. Similarly, a Micro-Electro-Mechanical Systems (MEMS)level can be used to determine the horizontal reference. As anotherexample, a ground plane can be detected in captured video frames. Forexample, the ground plane can be detected by determining a horizon linein the video frame.

The launch monitor can transition to a ready mode when theinitialization routines are complete. For example, the launch monitorcan transition to a ready mode when the accelerometer detects that thelaunch monitor is stationary (such as after it has been placed in theproper orientation) and a horizontal reference has been calculated.

At 320, the launch monitor can be in the ready mode. During the readymode, the user can input various information into the launch monitor viavoice commands, a touch screen, or other input device. For example, theuser can input a club that will be used for the next shot. As anotherexample, the user can input a distance to a target.

During the ready mode, the launch monitor can be searching or waitingfor a signal to begin capturing video frames that can be used tocalculate trajectory parameters of the ball. Various cues can be used toindicate that the launch monitor can transition to a high-speed capturemode. As one example, the launch monitor can remain in the ready modeuntil a backswing is detected. In particular, video frames from thecamera can be analyzed to determine if a ball and a clubhead arerecognized. If the ball and the clubhead are recognized, subsequentvideo frames can be analyzed to determine if the clubhead is moving awayfrom the ball while the ball is stationary, indicating the beginning ofthe backswing. When the backswing is detected, the launch monitor cantransition to the high-speed capture mode.

As another example, the launch monitor can remain in the ready modeuntil a voice command signals the launch monitor to transition to thehigh-speed capture mode. In particular, the output of a microphone, suchas microphone 234, can be analyzed and the launch monitor can transitionto the high-speed capture mode when the word “capture” or “begin” arerecognized by a natural language processing routine. As another example,the launch monitor can transition to the high-speed capture mode when aball is detected in the field of view of the camera. As yet anotherexample, the launch monitor can transition to the high-speed capturemode when a golf ball placed on a golf tee is detected in the field ofview of the camera.

At 330, the launch monitor can be in the high-speed capture mode. Whenthe launch monitor transitions to the high-speed capture mode, thecamera of the launch monitor can be changed to a high-speed mode wherethe camera has a higher frame rate than in a low-speed mode. Asdescribed below, with reference to FIG. 4, the frame rate of the cameracan be made higher by capturing fewer pixels per video frame during thehigh-speed mode. By increasing the frame rate, more video frames of afast-moving ball can be captured when the ball is in the field of viewof the camera. In contrast, a camera using a slower frame rate maycapture fewer or no video frames of the fast-moving ball when the ballis in the field of view of the camera. As described below, withreference to FIG. 5, multiple video frames captured by the camera can beanalyzed to calculate one or more trajectory parameters of the balland/or the clubhead. Capturing more video frames showing the fast-movingball can potentially increase the accuracy of the trajectory parametercalculations and/or enable more trajectory parameters (such as spin) tobe calculated.

The launch monitor can transition from the high-speed capture mode to apresentation mode based on various conditions. For example, the launchmonitor can transition to the presentation mode when it is detected thatthe ball has moved out of the field of view of the camera. As anotherexample, the launch monitor can transition to the presentation mode acalculated or predetermined amount of time after the ball has moved outof the field of view of the camera. In particular, the amount of timecan be based on an estimate of ball flight time. For example, a ball hitwith a driver may be in flight for approximately seven seconds. The ballflight time can be estimated based on one or more of the calculatedtrajectory parameters. As another example, the user of the launchmonitor can select an amount of time between when the ball is struck andwhen trajectory parameters are presented. For example, the user may wantquicker feedback when hitting into a net as compared to when hitting ona driving range or golf course.

At 340, the launch monitor can be in the presentation mode where thetrajectory parameters can be presented to a user of the launch monitor.The trajectory parameters can be presented in a variety of ways. As oneexample, the trajectory parameters can be presented visually on adisplay, such as the display 254, via text and/or graphics. Examplescreen-shots during the presentation mode are described in more detailbelow with reference to FIGS. 7 and 8. As another example, thetrajectory parameters can be presented audibly from a speaker, such asthe speaker 252, via a speech output. As another example, the trajectoryparameters can be transmitted from the launch monitor to an externaldevice, such as via the wireless modem 260. In particular, thetrajectory parameters can be transmitted via Bluetooth or Wi-Fi to aserver computer, watch, or other wearable device. The wearable devicecan present the parameters audibly or visually to the user. Similarly,the server computer can be used to present the parameters to the usereither directly or indirectly. For example, the server computer can usethe trajectory parameters in a simulation of playing on an actual orimaginary golf course. The server computer can generate images based onthe simulation and present the images on a display connected to theserver computer, for example.

After the trajectory parameters are presented, the launch monitor cantransition back to the ready mode in preparation for capturing video ofthe next shot. In this manner, the trajectory parameters can bepresented to a user after each shot so that the user can get real-timefeedback about his or her performance, and the user can make adjustmentsto try and improve during the practice session.

It should be noted that the modes described above are for illustrationpurposes only, and a launch monitor may have fewer or more modes thanthe example embodiment. Furthermore, some functionality described asbeing in one mode can alternatively be omitted or performed in adifferent mode. As one example, the camera can be switched to thehigh-speed mode in response to starting the launch monitor application,such as during the initialization mode. As another example, thepresentation mode and the ready mode may overlap and be part of the samemode of the launch monitor. As another example, the horizontal referencecan be calculated for each shot during the ready mode.

An Example Image Sensor

FIG. 4 is a schematic of a portion of an example image sensor array 480.The image sensor array 480 includes multiple individual image sensors orpixels arranged in rows (running left to right in FIG. 4) and columns(running up to down in FIG. 4). The image sensor array 480 can bepositioned in a camera, such as the camera 236, so that an image in thefield of view of the camera is focused onto the image sensor array 480.Thus, a portion of the image can be focused onto an individual pixel,such as pixel 400, which can sense the brightness of light incident onthe pixel and can produce a value proportional to the brightness. Thelight reaching each pixel can vary so that the focused image can bereconstructed using the values captured by the pixels of the imagesensor array 480. For example, a still image can be created by capturingthe values of the pixels of the image sensor array 480 at one point intime or within a short period of time, and storing the values in a datastructure that maintains the spatial relationship between the differentpixel values. The captured pixel values can be stored in a bitmap thatis uncompressed or compressed. As a specific example, the bitmap can bean array of pixel values having the same dimensions as the image sensorarray 480, where the captured value of a given pixel is stored in theposition corresponding to the given pixel's position in the image sensorarray 480. As another example, video data can be created by capturingvalues of the pixels of the image sensor array 480 at sequential pointsof time, and storing the values in a data structure that maintains thespatial and temporal relationship between the different pixel values. Inparticular, the captured pixel values can be divided into video frames,where a given video frame includes the pixel values captured during onescan of the image sensor array 480.

The image sensor array 480 can include electronics (not shown) forscanning and capturing the values of the pixels. The electronics used toscan and capture the values of the pixels is typically positioned alongthe periphery of the image sensor array 480 so that the electronics donot obstruct the image being captured. This arrangement can influence anorder or pattern in which the pixel values can be scanned and how longit takes to scan the pixel values out of the image sensor array 480. Thevalues of the pixels are typically scanned out of the image sensor array480 sequentially within a row before moving to a subsequent row. Forexample, the values can be sequentially scanned from a first row (e.g.,pixels 400-407 can be sequentially scanned) before sequentially scanningthe values from a second row (e.g., pixels 410-417). The time associatedwith scanning and capturing a value of an individual pixel is a bit ratetime. The row time is the time associated with scanning and capturing aline or row of pixels which can be the bit rate time multiplied by thenumber of pixels in the row. The frame time is the time associated withscanning and capturing a frame of pixels which can be the row timemultiplied by the number of rows that are scanned. The frame time is thereciprocal of a frame rate, which is a number of video frames that arecaptured per unit of time, such as the number of frames per second. Asthe number of rows in the video frame increases, the time it takes tocapture the video frame increases and the frame rate decreases.

The scan pattern for retrieving or capturing the values of the pixels istypically fixed in hardware when an image sensor array is manufactured.Scan patterns can be progressive or interlaced, for example. Aprogressive scan pattern can be used to scan all of the rows of theimage sensor in order. A video frame generated by a progressive scanpattern can include pixel values for all of the pixels of the imagesensor array, and the frame time can be at least the total number ofrows multiplied by the row time. An alternative scan pattern is theinterlaced scan pattern which can be used to scan the odd rows during afirst video frame and the even rows during a second, subsequent videoframe. A video frame generated by an interlaced scan pattern can includepixel values for half of the pixels of the image sensor array, and theframe time can be at least half of the number of rows multiplied by therow time. In other words, the frame rate can be increased bysub-sampling the sensor array by skipping lines of the sensor. Thus, avideo frame generated by the progressive scan pattern can have the fullspatial resolution of the image sensor array and half the frame ratecompared to a video frame generated by the interlaced scan pattern. Thevideo frame generated by the interlaced scan pattern can have half ofthe spatial resolution of the image sensor array and twice the framerate compared to a video frame generated by the progressive scanpattern.

In contrast to a typical image sensor array, the scan pattern of theimage sensor array 480 can be selectable. For example, the scan patternof the image sensor array 480 can be selectable, by software, between ahigh-speed scanning mode and a low-speed scanning mode. In oneembodiment, firmware of the image sensor array 480 can be used tocontrol the scan pattern. The high-speed mode of the image sensor array480 can be selected when a ball is detected in the field of view of thecamera, when a moving ball is detected in the field of view of thecamera, when a backswing is detected, when a launch monitor applicationis started, or upon a user command, for example. By having a selectablescan pattern, spatial resolution and frame rate can be traded off byselecting different scanning modes of the image sensor array 480.

The high-speed mode can be used to increase the frame rate of the imagesensor array 480 by capturing only a subset of pixels of the imagesensor array 480 per video frame. Thus, the frame rate can be increasedby the reciprocal of the percentage of total pixels captured during aframe time. As one example, the image sensor array 480 can have ahigh-speed interlaced scanning mode and a low-speed progressive scanningmode. The interlaced scanning mode can be used to capture a first subsetof pixels (e.g., the even rows) during a first video frame, and a secondsubset of pixels (e.g., the odd rows) during a second video frame sothat the frame rate can be potentially doubled. Different levels ordegrees of interlacing can be provided so that multiple high-speed modescan be supported. For example, an interlacing pattern can read the rowsin a modulo-four pattern so that four consecutive video frames includepixels from four different subsets of pixels. In particular, for ann-row image sensor, the first video frame can include pixels from rows0, 4, 8, . . . n−3; the second video frame can include pixels from rows2, 6, 10, . . . n−1; the third video frame can include pixels from rows1, 5, 9, . . . n−2; and the fourth video frame can include pixels fromrows 3, 7, 11, . . . n. Thus, the frame rate can be potentiallyquadrupled.

The high-speed mode can include different scan patterns for capturingsubsets of pixel values in a video frame. The subsets of pixels to becaptured can correspond to a predetermined portion of the image sensorarray 480. For example, the image sensor can be cropped or divided intoquadrants and during the high-speed mode, less than all of the quadrantscan be scanned. As a specific example, the upper left quadrant can beselected and the video frames can include only pixel values capturedfrom the upper left quadrant. Thus, the frame rate during high-speedmode can be potentially four times the frame rate when the entire imagesensor array is scanned, since only one-fourth of the pixels arescanned. During this mode, the image focused on the other quadrants willnot be captured.

The subsets of pixels to be captured can be bounded by columns and/orrows that are provided to the image sensor array 480. For example, astarting column, an ending column, a starting row, and an ending row canbe provided as bounds of the pixels to be scanned. As a specificexample, column 2 can be the starting column, column 5 can be the endingcolumn, row 2 can be the starting row, and row 6 can be the ending rowso that the pixels bounded by pixels 422, 425, 465, and 462 can becaptured. In one embodiment, the pixels captured within the bounded areacan be scanned according to a pattern provided to the image sensor array480. For example, the pixels can be scanned progressively or interlaced.Thus, the frame-rate of the image sensor array 480 can be furtherincreased by combining cropping (e.g., sampling a sub-array of pixels)and interlacing.

The image sensor array 480 can be used to capture gray-scale or colorvideo data. For example, a color filter array can be positioned in thepath of the focused image that is directed toward the image sensor array480, so that the different pixels can be used to detect differentcolors. For example, the color filter array can be arranged in triads ora Bayer mosaic having red, green, and blue filters. In this manner, acolor image can be constructed from the values of red, green, and bluelight detected at the individual pixels.

An Example of Processing an Image of a Video Frame

The video frames can be pre-processed before calculating trajectoryparameters. FIG. 5 is an example of processing an image of a videoframe. In particular, the image can begin as a raw image 500 and can betransformed into a segmented image 530 and a combined image 560. The rawimage 500 can be the video frame as it is received from the image sensorarray 480. The raw image 500 can have a color or gray-scale image of aball 510 and a background 520. The ball 510 can include a ball logo 515,dimples (not shown), and/or other markings (not shown). The background520 can be everything in the image other than the ball 510.

The raw image 500 can be segmented or partitioned to generate thesegmented image 530 so that the boundary and other properties of theball 510 can be identified. Within a given video frame, the ball 510 canbe identified based on detecting various properties of the ball 510,such as size, shape, color, and/or a fiduciary marker. For example, golfballs are generally white, but can be shades of yellow, green, ororange. The image of a golf ball is generally circular when projectedonto a two-dimensional surface, such as the image sensor array. By rule,golf balls are 1.680 inches in diameter. The fiduciary marker can be theball logo 515, a pattern of dots, or other marking. Partitioningalgorithms can include thresholding, edge detection, k-means clustering,histogram based algorithms, partial-differential equation based methods,region-growing methods, graph-partitioning methods and other algorithmsknown in the art. The golf ball can be identified within the raw frame500 by finding a circle of the appropriate size and/or color, findingthe fiduciary marker, and/or using geodesic dilation, for example. Thepartitioning can generate the segmented image 530 where the image of thegolf ball can be separated from other regions of the image, such as aclubhead, a golfer, a tee, and any other background. For example, thebackground region 550 can be any regions that are not part of the ballregion 540. The pixel values of the background region 550 can be set tozero or black to effectively remove or subtract out the backgroundregion 550 from the video frame. In contrast, the pixel values of theball region 540 can be set to one or white. Thus, the segmented image530 can be a binary image having pixel values of only zero and one.

Basic properties of the ball and its location can be calculated from thesegmented image 530. For example, a centroid 542 of the ball region 540can be calculated. In particular, the centroid 542 can be the average xand y position of the white pixels, where x indicates the column of theimage sensor array and y indicates the row of the image sensor array. Asanother example, the diameter 544 of the ball can be calculated. Inparticular, the diameter 544 (in pixels) can be the maximum x positionof the white pixels minus the minimum x position of the white pixels.Alternatively, the diameter 544 can be the maximum y position of thewhite pixels minus the minimum y position of the white pixels. Relativedistances can be calculated by comparing the diameter 544 in one videoframe to the diameter 544 in a different video frame. Since the ball canbe assumed to always be 1.680 inches in diameter, a smaller ball (asmeasured in pixels) will be farther from the launch monitor than alarger ball.

The combined image 560 can be used to calculate additional properties ofthe ball. The combined image 560 can be the raw image 500 multiplied bythe segmented image 530. Thus, the color and/or gray-scale pixel values510 can be reintroduced over the ball region 540 while the backgroundremains black. As described above, the ball logo 515 can be used as afiduciary marker to calculate an orientation of the ball. In oneembodiment, the gray-scale pixel values 510 can be processed to increasethe contrast ratio above the native contrast ratio of the image sensorarray. Increasing the contrast ratio can potentially increase theaccuracy of calculated properties of the ball. A logo axis 570 can bedetermined along a long axis of the ball logo 515. An axial logoposition 580 can be calculated as the distance of the beginning of theball logo 515 from the centroid 542 along the logo axis 570. Anorthogonal axis 590 can be determined as orthogonal to the logo axis 570and through the centroid 542. As described below, with reference to FIG.6, the different properties of the ball can be used to calculate thetrajectory parameters of the ball.

As an alternative to detecting the ball in a single image, the movingball can be detected based on motion between video frames. For example,consecutive frames can be compared, and unchanging stationary objectscan be subtracted from the video frames so that only moving objectsremain. As a first approximation, a stationary object can be detectedwhen the pixel values of a given spatial location are unchanging fromone video frame to a consecutive video frame.

Additional processing of the image can be performed. For example, theimages can be de-blurred or deconvolved to account for a rollingshutter. The rolling shutter effect can be caused by the pixels of theimage sensor array being captured at slightly different times. Forexample, the pixel values captured from a first row of the image sensorcan be captured one row time before the pixel values from theimmediately subsequent row are captured. For a stationary object, thetime difference can be inconsequential. However, the captured images ofa fast moving ball can be blurred in a translational and rotationaldirection, creating a smear or shear in the direction of motion. Theshear can be corrected using an estimate of the speed of the movingobject. Generally, the pixel values of the moving object can be shiftedopposite the direction of motion in an amount proportional to thedistance travelled in the time difference between when the differentpixels are captured.

Additionally or alternatively, the extent of translational androtational blurring can be used to directly estimate the speed and spinof the ball. For example, during deconvolution, a point spread function(a mathematical formulation that describes how an idealized singularpoint is deformed in an image) can be calculated. Treating the ball as arigid body, the speed and spin of the ball can be estimated based on thepoint spread function obtained from the image. In other words, the speedand spin of the ball can be calculated based on the extent oftranslational and rotational blurring. Thus, using deconvolution with arolling shutter can potentially be used to increase the effective framerate and to remove distortion artifacts specific to rolling shutters.

An Example of Calculating Trajectory Parameters from Multiple VideoFrames

Trajectory parameters of a ball can be calculated using multiple videoframes taken while the ball is in motion. The trajectory parameters caninclude ball speed, launch angle, horizontal or deviation angle,backspin, and sidespin, for example. A struck golf ball can be launchedwith a linear speed approaching 200 miles per hour and a rotationalspeed of around 10,000 revolutions per minute. A typical camera in amobile device may not have a frame rate that is fast enough to capturemultiple images of the ball after it is struck, or with high enoughquality to calculate parameters such as spin. For example, to measurespin, it may be desirable for the camera to capture multiple images ofthe ball while a fiduciary marker is facing the camera. A camera, suchas camera 236, with a high-speed mode having a higher frame rate, canpotentially capture more images of the ball after it is struck, whilethe ball is in the field of view of the camera, and while the fiduciarymarker is facing the camera.

FIG. 6 is an example of images of balls (600, 610) captured during twodifferent video frames and overlaid to illustrate how the trajectoryparameters can be calculated. The first ball image 600 corresponding to“T1” can be from a video frame taken or captured during a first periodof time and the second ball image 610 corresponding to “T2” can be froma video frame taken during a subsequent period of time. The images fromthe video frames include values captured from individual pixels and maybe blurred from the motion of the ball. However, for ease ofillustration, the individual pixel values are not shown, and the imagesare shown deblurred. Some trajectory parameters of the ball, such as alaunch angle 620, a ball speed, and a horizontal angle can be calculatedeither from a binary segmented image or from a combined image where thegray-scale or color information is present. Other trajectory parametersof the ball, such as sidespin and backspin are calculated from thecombined image.

The first ball image 600 can include several points of reference, suchas a centroid 602, an axial logo position 604, a logo axis 606, anorthogonal axis 608, and a diameter 609. Similarly, the second ballimage 610 can include several points of reference, such as a centroid612, an axial logo position 614, a logo axis 616, an orthogonal axis618, and a diameter 619.

The launch angle 620 is the initial angle of flight that the ball takesrelative to a horizontal plane as it is propelled from the clubface. Forexample, the launch angle 620 can be calculated using the coordinates ofthe centroid 602 of the first ball image 600 and coordinates of thecentroid 612 of the second ball image 610. A horizontal ray 630 can becalculated as the row corresponding to the y coordinate of the centroid602. A ray 640 along the line of flight can be calculated as originatingat the first centroid 602 and travelling in the direction of the secondcentroid 612. The launch angle 620 can be calculated as the anglebetween the horizontal ray 630 and the line-of-flight ray 640. Inparticular, the x-distance 650 between the centroids 602 and 612 alongthe x-axis can be calculated; the y-distance 660 between the centroids602 and 612 along the y-axis can be calculated; and the launch angle 620can be calculated as:Launch angle 620=tan⁻¹(y-distance 660/x-distance 650).

When the horizontal ray 630 is parallel to a row of the image sensorarray, the launch angle 620 is the angle of flight relative to the imagesensor array. However, the image sensor array may be angled relative toa true horizontal that is orthogonal to the acceleration of gravity. Asdescribed above, the acceleration of gravity can be determined using theaccelerometer 286 or a MEMS level. Thus, the true launch angle can becalculated by subtracting the angle of the image sensor array relativeto true horizontal from the calculated launch angle 620.

While the launch angle 620 is described as being calculated from twovideo frames, it should be understood that the launch angle 620 can becalculated from additional video frames. For example, applyingstatistical techniques across multiple frames can potentially increasethe accuracy of the launch angle calculation. For example, the centroidsof ball images in three or four video frames can be calculated, and thelaunch angle can be calculated by using a best-fit line through thecentroids of the ball images. As another example, a launch anglecalculated with a first set of frames can be averaged with a launchangle calculated with a second set of frames, where the first and secondset of frames can be overlapping or non-overlapping. Similarly,statistical methods can be used when calculating other trajectoryparameters of the ball.

The horizontal or deviation angle is the initial angle of flight thatthe ball takes relative to a vertical plane aligned along the targetline. In other words, the deviation angle is a measure of the angularamount that the ball is off-target. The horizontal angle can becalculated using the diameter 609 of the first ball image 600 and thediameter 619 of the second ball image 610. For example, if the ballincreases in size as time progresses, the ball is moving closer to thelaunch monitor, but if the ball decreases in size as time progresses,the ball is moving farther from the launch monitor. The diameter of agolf ball is 1.680 inches and so the relative distance of the ball fromthe image sensor array at different times can be calculated withtrigonometric equations. After the ball is struck, it can move inthree-dimensional space with components along the target line (e.g., thex-axis), along the vertical (e.g., the y-axis), and along a normal tothe image sensor array (e.g., the z-axis). A linear interpolation can beused to determine the change in diameter size due to movement in each ofthe respective axes. A z-distance (not shown) can be calculated as thedistance the ball moves relative to the z-axis from time T1 to time T2.The horizontal angle can be calculated as:Horizontal angle=tan⁻¹(z-distance/x-distance 650).

Ball speed is the Euclidean distance the ball travels divided by thetime it takes to travel that distance. As one example, the Euclideandistance can be calculated as:Distance=((x-distance 650)²*(y-distance 660)²*(z-distance)²)^(1/2)Alternatively, the z-distance can be approximated as zero, such as whenthe z-distance is relatively smaller than the x-distance 650 and they-distance 660.

As a first approximation, the time (e.g., T2−T1) to travel the distancecan be the frame time (the reciprocal of the frame-rate) when the images600 and 610 are from consecutive video frames. For a rolling shutter,the time can be refined by taking into account the rows of the imagesensor array corresponding to the centroids of the images. For example,if the image sensor array progresses from low rows to high rows, a lowernumbered row is captured before a higher numbered row. As a specificexample, an image sensor array scanning consecutively through the rows(from lowest row to highest row) will sample row 2 ten row times beforerow 12. Thus, the ball speed can be the distance the ball travelsbetween the video frames divided by the time between when the centroidsof the ball images were captured.

Backspin can be the rate of rotation of the ball in a direction counterto the direction of motion. Alternatively, backspin can be the rate ofrotation of the ball within the plane of the image. An amount ofrotation can be calculated by identifying one or more fiduciary markersin a reference video frame and determining the movement or displacementof the fiduciary markers in a subsequent video frame. For example, thelaunch monitor user can be instructed to tee-up or position the ball sothat the ball logo faces the launch monitor prior to being struck by theclub. The ball logo can be the fiduciary marker and the logo axis 606can be identified as parallel to the long axis of the ball logo andrunning through the centroid 602. Alternatively, the logo axis 606 canbe identified as running through the geometric center of the ball logo.At time T1, the logo axis may be oriented at an initial angle 670relative to the horizontal axis 630. At time T2, the logo axis 616 maybe oriented at a subsequent angle 680 relative to the horizontal axis630. The angular motion is the difference between the subsequent angle680 and the initial angle 670. The angular motion can be calculated inradians, degrees, percentage of a rotation, or other units. The rate ofrotation is the angular motion divided by the time difference betweenthe captured video frames.

As another example, a first unit vector, V1, can be calculated with adirection along the logo axis 606, and a second unit vector, V2, can becalculated with a direction along the logo axis 616. The dot product ofthe vectors is:V1·V2=|V1|*|V2|*cos(θ).Thus, the angle between the vectors can be calculated by solving for θ,using the dot product back calculation:θ=cos⁻¹((V1·V2)/(|V1|*|V2|)).The backspin can be calculated by normalizing θ by the time between thevideo frames (e.g., T2−T1).

Sidespin can be the rate of rotation of the ball in a direction aboutthe orthogonal axis 608. Alternatively, sidespin can be the rate ofrotation of the ball in a plane orthogonal to the plane of the image andparallel to the ground plane. For example, the axial logo position 604can be calculated as the distance from the front of the ball logo to theorthogonal axis 608 at time T1. The axial logo position 604 can becalculated in radians, degrees, or percentage of a rotation, forexample. Similarly, the axial logo position 614 can be calculated as thedistance from the front of the ball logo to the orthogonal axis 618 attime T2. The sidespin can be calculated as the amount of rotation fromtime T1 to T2 divided by the time between the video frames (e.g.,T2−T1).

Additional parameters can be calculated using the basic trajectoryparameters of launch angle, speed, deviation angle, backspin, andsidespin. For example, a carry distance, total distance, shot deviation,and shots gained can be estimated using aerodynamic equations of a golfball. Parameters of the clubhead can be measured in a similar manner aswith the golf ball. For example, a swing speed can be calculated bytracking motion of the clubhead in successive video frames. Theparameters can be combined to create additional parameters, such assmash factor (the ratio between ball speed and club-head speed), forexample. In an alternative embodiment, the launch monitor can be placedbehind the ball and the equations for calculating the trajectoryparameters can be adjusted accordingly to account for the differentorientation of the launch monitor.

Example Screen-shots of the Mobile Launch Monitor

FIGS. 7 and 8 are examples of screen-shots of the mobile launch monitor.For example, the launch monitor can have multiple presentation formatsthat can be used to display information to a user during thepresentation or other mode of the launch monitor. The screen-shots canbe displayed on a display of the launch monitor, such as display 254,for example. Trajectory parameters of one or more shots can be shownusing text (such as in a tabular form) or graphics. Statisticsassociated with the one or more of the trajectory parameters and one ormore shots can be displayed, such as averages, standard deviations, andother statistical properties. The trajectory parameters can be displayedalong with target or goal parameters, such as Professional Golfers'Association (PGA) tour averages. Other settings of the launch monitorcan be shown, such as a selected club or a target distance, that may bedefined by the user.

As a specific example, in screen-shot 700, a selected club is displayed,trajectory parameters of the last four shots are shown in a tabularformat, and a graphic highlighting trajectory parameters of the lastshot are displayed. The display may be a touch-screen and user input canbe received from the touch-screen. Additionally or alternatively, inputcan be received from voice input via a microphone of the launch monitor.As one example, a pull-down menu can be displayed when the user touches“select club” and various clubs can be selectable within the pull-downmenu. As another example, the user may be able to scroll through thetable of data by dragging a finger up or down in a direction along oneof the columns. As another example, a mode icon (not shown) may allowthe user to switch between different presentation modes, such as betweenthe screen-shots 700 and 800.

As another example, in screen-shot 800, trajectory parameters of thelast three shots are shown in a tabular format, and a graphichighlighting shot grouping is displayed. In particular, a specifiedtarget 810 is displayed. For example, the specified target 810 can bespecified when the user enters a distance to the target. An estimatedplacement of the last shot can be calculated from the trajectoryparameters and displayed as last shot 820. The estimated placement ofearlier shots can be retained in memory and displayed within adispersion circle 830.

An Example Method of Determining a Trajectory Parameter of a Ball

FIG. 9 is a flow diagram of an example method of determining atrajectory parameter of a ball using a launch monitor. At 910, ahigh-speed capture mode of a camera of the launch monitor can beentered. For example, the camera can include a low-speed mode and ahigh-speed mode. In low-speed mode, the camera may capture images withhigher spatial resolutions but lower temporal resolutions than when inhigh-speed mode. For example, during the high-speed mode, the camera maycapture fewer pixels of an image sensor array of the camera per videoframe. Thus, the high-speed mode can have a higher frame rate than thelow-speed mode of the camera.

The high-speed mode can be entered at various times. For example, thehigh-speed mode can be entered when a launch monitor application islaunched on a mobile device that also performs additional applications.As other examples, the high-speed mode can be entered when a clubhead isdetected, a backswing is detected, or a ball is detected. The high-speedmode can be entered when a timer expires, such as between five and tenseconds after an earlier shot was detected.

At 920, the camera of the launch monitor can capture a first video frameof a ball using a first subset of pixels of an image sensor array of thecamera. The first subset of pixels are a portion of the pixels of theimage sensor array. For example, the values of the first subset ofpixels can be captured in a video frame using an interlaced scan patternassociated with the high-speed mode. Thus, the first subset of pixelscan be the even rows, the odd rows, or every fourth row of the imagesensor array. As another example, the values of the first subset ofpixels can be captured in a video frame using a sub-array of the imagesensor array. In particular, a starting row, ending row, startingcolumn, and ending column of the sub-array can be specified to create aboundary of the sub-array. The boundary can be pre-defined by thehardware or firmware of the camera, such as when the sub-array is a halfor quadrant of the pixel array. Alternatively, the boundary can bedefined dynamically based on a starting position of the ball and anestimated direction of flight. The techniques of interlacing andcapturing a sub-array can be combined so that the first subset of pixelscan include the even rows of a particular sub-array, for example.

At 930, the camera of the launch monitor can capture a second videoframe of the ball using a second subset of pixels of the image sensorarray of the camera. The second subset of pixels can be the same or adifferent subset compared to the first subset of pixels. For example,the second subset of pixels can be the same sub-array of pixels as thefirst subset of pixels, such as when the high-speed mode uses aprogressive scan of the sub-array of pixels. As another example, thesecond subset of pixels can be different from the first subset ofpixels, such as when the high-speed mode uses an interlaced scanpattern. Thus, the first subset of pixels can be the even rows of theimage sensor array and the second subset of pixels can be the odd rowsof the image sensor array.

At 940, a trajectory parameter of the ball can be calculated using thefirst video frame and the second video frame. As described above withreference to FIG. 6, the trajectory parameters can include launch angle,ball speed, deviation angle, backspin, and sidespin, for example. Thecalculated trajectory parameters can be output to a user of the launchmonitor.

An Example Computing Environment

FIG. 10 depicts a generalized example of a suitable computingenvironment 1000 in which the described innovations may be implemented.The computing environment 1000 is not intended to suggest any limitationas to scope of use or functionality, as the innovations may beimplemented in diverse general-purpose or special-purpose computingsystems. For example, the computing environment 1000 can be any of avariety of computing devices (e.g., desktop computer, laptop computer,server computer, tablet computer, media player, gaming system, mobiledevice, etc.)

With reference to FIG. 10, the computing environment 1000 includes oneor more processing units 1010, 1015 and memory 1020, 1025. In FIG. 10,this basic configuration 1030 is included within a dashed line. Theprocessing units 1010, 1015 execute computer-executable instructions. Aprocessing unit can be a general-purpose central processing unit (CPU),processor in an application-specific integrated circuit (ASIC) or anyother type of processor. In a multi-processing system, multipleprocessing units execute computer-executable instructions to increaseprocessing power. For example, FIG. 10 shows a central processing unit1010 as well as a graphics processing unit or co-processing unit 1015.The tangible memory 1020, 1025 may be volatile memory (e.g., registers,cache, RAM), non-volatile memory (e.g., ROM, EEPROM, flash memory,etc.), or some combination of the two, accessible by the processingunit(s). The memory 1020, 1025 stores software 1080 implementing one ormore innovations described herein, in the form of computer-executableinstructions suitable for execution by the processing unit(s).

A computing system may have additional features. For example, thecomputing environment 1000 includes storage 1040, one or more inputdevices 1050, one or more output devices 1060, and one or morecommunication connections 1070. An interconnection mechanism (not shown)such as a bus, controller, or network interconnects the components ofthe computing environment 1000. Typically, operating system software(not shown) provides an operating environment for other softwareexecuting in the computing environment 1000, and coordinates activitiesof the components of the computing environment 1000.

The tangible storage 1040 may be removable or non-removable, andincludes magnetic disks, magnetic tapes or cassettes, CD-ROMs, DVDs, orany other medium which can be used to store information in anon-transitory way and which can be accessed within the computingenvironment 1000. The storage 1040 stores instructions for the software1080 implementing one or more innovations described herein.

The input device(s) 1050 may be a touch input device such as a keyboard,mouse, pen, or trackball, a voice input device, a scanning device, oranother device that provides input to the computing environment 1000.For video encoding, the input device(s) 1050 may be a camera, videocard, TV tuner card, or similar device that accepts video input inanalog or digital form, or a CD-ROM or CD-RW that reads video samplesinto the computing environment 1000. The output device(s) 1060 may be adisplay, printer, speaker, CD-writer, or another device that providesoutput from the computing environment 1000.

The communication connection(s) 1070 enable communication over acommunication medium to another computing entity. The communicationmedium conveys information such as computer-executable instructions,audio or video input or output, or other data in a modulated datasignal. A modulated data signal is a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia can use an electrical, optical, RF, or other carrier.

Although the operations of some of the disclosed methods are describedin a particular, sequential order for convenient presentation, it shouldbe understood that this manner of description encompasses rearrangement,unless a particular ordering is required by specific language set forthbelow. For example, operations described sequentially may in some casesbe rearranged or performed concurrently. Moreover, for the sake ofsimplicity, the attached figures may not show the various ways in whichthe disclosed methods can be used in conjunction with other methods.

Any of the disclosed methods can be implemented as computer-executableinstructions stored on one or more computer-readable storage media(e.g., one or more optical media discs, volatile memory components (suchas DRAM or SRAM), or nonvolatile memory components (such as flash memoryor hard drives)) and executed on a computer (e.g., any commerciallyavailable computer, including smart phones or other mobile devices thatinclude computing hardware). The term computer-readable storage mediadoes not include communication connections, such as signals and carrierwaves. Any of the computer-executable instructions for implementing thedisclosed techniques as well as any data created and used duringimplementation of the disclosed embodiments can be stored on one or morecomputer-readable storage media. The computer-executable instructionscan be part of, for example, a dedicated software application or asoftware application that is accessed or downloaded via a web browser orother software application (such as a remote computing application).Such software can be executed, for example, on a single local computer(e.g., any suitable commercially available computer) or in a networkenvironment (e.g., via the Internet, a wide-area network, a local-areanetwork, a client-server network (such as a cloud computing network), orother such network) using one or more network computers.

For clarity, only certain selected aspects of the software-basedimplementations are described. Other details that are well known in theart are omitted. For example, it should be understood that the disclosedtechnology is not limited to any specific computer language or program.For instance, the disclosed technology can be implemented by softwarewritten in C++, Java, Perl, JavaScript, Adobe Flash, or any othersuitable programming language. Likewise, the disclosed technology is notlimited to any particular computer or type of hardware. Certain detailsof suitable computers and hardware are well known and need not be setforth in detail in this disclosure.

It should also be well understood that any functionality describedherein can be performed, at least in part, by one or more hardware logiccomponents, instead of software. For example, and without limitation,illustrative types of hardware logic components that can be used includeField-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc.

Furthermore, any of the software-based embodiments (comprising, forexample, computer-executable instructions for causing a computer toperform any of the disclosed methods) can be uploaded, downloaded, orremotely accessed through a suitable communication means. Such suitablecommunication means include, for example, the Internet, the World WideWeb, an intranet, software applications, cable (including fiber opticcable), magnetic communications, electromagnetic communications(including RF, microwave, and infrared communications), electroniccommunications, or other such communication means.

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and nonobvious features and aspects of the various disclosedembodiments, alone and in various combinations and subcombinations withone another. The disclosed methods, apparatus, and systems are notlimited to any specific aspect or feature or combination thereof, nor dothe disclosed embodiments require that any one or more specificadvantages be present or problems be solved.

In view of the many possible embodiments to which the principles of thedisclosed invention may be applied, it should be recognized that theillustrated embodiments are only preferred examples of the invention andshould not be taken as limiting the scope of the invention. Rather, thescope of the invention is defined by the following claims. We thereforeclaim as our invention all that comes within the scope and spirit ofthese claims.

We claim:
 1. A method for determining a trajectory parameter of a golfball, comprising: using an accelerometer to detect that an image sensoris stationary; in response to detecting that the image sensor isstationary, changing a mode of the image sensor to a high-speed mode,wherein the image sensor in high-speed mode has a frame rate that isfaster than when the image sensor is not in high-speed mode; when in thehigh-speed mode, capturing a first video frame of the golf ball and asecond video frame of the golf ball; and calculating the trajectoryparameter of the golf ball using the first video frame and the secondvideo frame.
 2. The method of claim 1, wherein the accelerometer and theimage sensor are incorporated within a computing device, and the methodfurther comprises: wirelessly transmitting the trajectory parameter fromthe computing device to at least one external device.
 3. The method ofclaim 2, wherein the at least one external device includes a wearabledevice.
 4. The method of claim 2, wherein the at least one externaldevice is connected to a display.
 5. The method of claim 4, furthercomprising: visually presenting the trajectory parameter on the displayconnected to the at least one external device.
 6. The method of claim 1,wherein the first video frame is captured using a first subset of pixelsfrom even rows of the image sensor and the second video frame iscaptured using a second subset of pixels from odd rows of the imagesensor.
 7. The method of claim 1, wherein the first video frame and thesecond video frame are captured using a same set of pixels of the imagesensor.
 8. The method of claim 1, wherein the mode of the image sensoris changed to the high-speed mode in response to detecting both that theimage sensor is stationary and the golf ball is detected in a thirdvideo frame captured from the image sensor.
 9. A non-transientcomputer-readable storage medium having instructions thereon forexecuting a method of calculating a trajectory parameter of a ball, themethod comprising: detecting that a camera is stationary; afterdetecting that the camera is stationary, changing a mode of the camerafrom a low-speed mode to a high-speed mode, the camera using a higherframe rate to capture video in the high-speed mode than when capturingvideo in the low-speed mode; receiving a first video frame of the ballin motion and captured during the high-speed mode; receiving a secondvideo frame of the ball in motion and captured during the high-speedmode; calculating the trajectory parameter of the ball using at leastone of the first video frame and the second video frame.
 10. Thecomputer-readable storage medium of claim 9, wherein the camera isintegrated within a computing device, and the method further comprises:transmitting the trajectory parameter of the ball to an external devicein communication with the computing device.
 11. The computer-readablestorage medium of claim 10, wherein the trajectory parameter of the ballis encoded as an audio signal before being transmitted to the externaldevice.
 12. The computer-readable storage medium of claim 10, whereinthe trajectory parameter of the ball is transmitted wirelessly to theexternal device.
 13. The computer-readable storage medium of claim 9,wherein the camera comprises an image sensor array having a plurality ofpixels, and the camera captures a sub-array of the plurality of pixelsduring the high-speed mode.
 14. The computer-readable storage medium ofclaim 9, wherein the camera uses interlaced scanning of an image sensorarray of the camera during the high-speed mode and progressive scanningof the image sensor array during the low-speed mode.
 15. Thecomputer-readable storage medium of claim 9, wherein the cameracomprises an image sensor array having a plurality of pixels, and thecamera captures a sub-array of the plurality of pixels using interlacedscanning of the image sensor array during the high-speed mode.
 16. Amobile device for monitoring a golf ball, comprising: a processor; anaccelerometer; a camera comprising an image sensor including a pluralityof pixels and a plurality of scan patterns for capturing a video frame,the plurality of scan patterns including a high-speed scan pattern and alow-speed scan pattern; and a computer-readable storage medium includinginstructions that upon execution cause the processor to: use an outputof the accelerometer to detect whether the mobile device is stationary;after the mobile device is detected to be stationary, use the high-speedscan pattern of the camera to capture video of the golf ball; andcalculate a motion parameter of the golf ball using one or more videoframes captured by the image sensor.
 17. The mobile device of claim 16,wherein the computer-readable storage medium further includesinstructions that upon execution cause the processor to: transmit themotion parameter from the mobile device to an external device.
 18. Themobile device of claim 17, wherein the external device is a wearabledevice.
 19. The mobile device of claim 17, wherein the external deviceis a computing device connected to a display.
 20. The mobile device ofclaim 16, wherein the high-speed scan pattern scans a sub-array of theplurality of pixels and the low-speed scan pattern scans all of theplurality of pixels.